import matplotlib.pyplot as plt

# 设置中文字体支持
plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'DejaVu Sans']  # 设置中文字体
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题

# 1. 准备数据
labels = ['苹果', '香蕉', '橙子', '葡萄','荔枝']  # 类别标签
sizes = [20, 20, 20, 20,20]    # 各部分大小
explode = [0, 0, 0, 0,0]    # 突出显示

# 2. 创建画布
plt.figure(figsize=(8, 8), dpi=100)

# 3. 绘制饼图
wedges, texts, autotexts = plt.pie(
    sizes,
    explode=explode,    # 突出显示设置
    labels=labels,    # 类别标签
    autopct='%1.2f%%',    # 显示百分比（保留1位小数）
    shadow=True,    # 阴影效果
    startangle=90,    # 起始角度（90度为从正上方开始）
    colors=['red', 'yellow', 'orange', 'purple','black'],  # 自定义颜色
    textprops={'fontsize': 12},  # 标签文字大小
    pctdistance=0.85,    # 百分比文字距离圆心的距离（0-1）
    wedgeprops={'edgecolor': 'white', 'linewidth': 2}  # 扇区边框
)

# 4. 美化文本
plt.setp(autotexts, size=10, weight='bold', color='white')  # 百分比文字样式
plt.title('水果销量占比', fontsize=15)  # 标题

# 5. 保证饼图为正圆形
plt.axis('equal')

# 6. 显示图表
plt.tight_layout()
plt.show()

import matplotlib.pyplot as plt

# 设置中文字体支持
# plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体
# plt.rcParams['axes.unicode_minus'] = False   # 解决负号显示问题
#
# labels = ['优秀', '良好', '中等', '及格', '不及格', '缺考']
# sizes = [15, 25, 30, 10, 8, 12]  # 修正：使用数字而不是字符串
# explode = [0, 0, 0, 0, 0, 0]
#
# plt.figure(figsize=(8, 8), dpi=100)
#
# wedges, texts, autotexts = plt.pie(
#     sizes,
#     explode=explode,    # 突出显示设置
#     labels=labels,    # 类别标签
#     autopct='%1.2f%%',    # 显示百分比（保留2位小数）
#     shadow=True,    # 阴影效果
#     startangle=90,    # 起始角度（90度为从正上方开始）
#     colors=['#ff9999', '#66b3ff', '#99ff99', '#ffcc99', '#ff99cc', '#c2c2f0'],  # 修正：使用列表，修正引号
#     textprops={'fontsize': 12},  # 标签文字大小
#     pctdistance=0.85,    # 百分比文字距离圆心的距离（0-1）
#     wedgeprops={'edgecolor': 'white', 'linewidth': 2}  # 扇区边框
# )
#
# plt.setp(autotexts, size=10, weight='bold', color='white')  # 百分比文字样式
# plt.title('成绩分布占比', fontsize=15)  # 标题改为成绩分布
#
# # 保证饼图为正圆形
# plt.axis('equal')
#
# # 显示图表
# plt.tight_layout()
# plt.show()

# import numpy as np
# import matplotlib.pyplot as plt
#
# plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体
# plt.rcParams['axes.unicode_minus'] = False   # 解决负号显示问题
# #
# # 1. 准备数据
# np.random.seed(42)  # 设置随机种子，保证结果可复现
# x = np.random.randn(200)  # 200个符合正态分布的x值
# y = 2 * x + np.random.randn(200) * 0.5  # y与x大致呈线性关系，加噪声
# sizes = np.random.randint(10, 100, 200)  # 点的大小（10-100随机）
# colors = np.random.rand(200)  # 点的颜色（0-1随机，用于颜色映射）
#
# # 2. 创建画布
# plt.figure(figsize=(10, 6), dpi=100)
#
# # 3. 绘制散点图
# scatter = plt.scatter(
#     x, y,
#     s=sizes,  # 点的大小
#     c=colors,  # 点的颜色（或颜色索引）
#     alpha=0.7,  # 透明度（0-1）
#     marker='o',  # 点形状
#     cmap='viridis',  # 颜色映射方案（可选：plasma, inferno等）
#     edgecolors='black',  # 点边缘颜色
#     linewidths=0.5  # 点边缘宽度
# )
#
# # 4. 设置图表属性
# plt.title('变量x与y的散点图', fontsize=15)
# plt.xlabel('x值', fontsize=12)
# plt.ylabel('y值', fontsize=12)  # 修正：Y改为y
# plt.grid(True, linestyle=':', alpha=0.5)
# plt.colorbar(scatter, label='颜色强度')  # 添加颜色映射条
#
# # 5. 显示图表
# plt.tight_layout()
# plt.show()

# import numpy as np
# import matplotlib.pyplot as plt
#
# plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体
# plt.rcParams['axes.unicode_minus'] = False   # 解决负号显示问题
#
# price = [89, 129, 169, 199, 229, 269, 299, 329, 369, 399]  # 单价
# sales = [1200, 950, 800, 720, 600, 550, 480, 400, 300, 250]  # 月销量
#
# x = np.array(price)
# y = np.array(sales)
#
# n = len(x)
# slope = (n * np.sum(x * y) - np.sum(x) * np.sum(y)) / (n * np.sum(x * x) - np.sum(x) ** 2)
# intercept = (np.sum(y) - slope * np.sum(x)) / n
#
# correlation = np.corrcoef(x, y)[0, 1]
#
# plt.figure(figsize=(10, 6), dpi=100)
#
# plt.scatter(
#     price,
#     sales,
#     s=80,  # 点的大小
#     color='blue',  # 蓝色点
#     alpha=0.7,  # 透明度
#     marker='o',  # 点形状
#     edgecolors='black',  # 点边缘颜色
#     linewidths=1
# )
#
# plt.title('连衣裙单价与月销量关系散点图', fontsize=15)
# plt.xlabel('单价（元）', fontsize=12)
# plt.ylabel('月销量（件）', fontsize=12)
# plt.grid(True, linestyle=':', alpha=0.5)
#
# plt.show()
#
# print(f"相关性强度: {'强负相关' if correlation < -0.7 else '中等负相关' if correlation < -0.3 else '弱负相关'}")

# import matplotlib.pyplot as plt
#
# # 设置中文字体支持
# plt.rcParams['font.sans-serif'] = ['SimHei']
# plt.rcParams['axes.unicode_minus'] = False
#
# # 1. 准备数据
# labels = ['手机', '电脑', '平板', '手表']
# sizes = [45, 30, 15, 10]
# colors = ['#ff9999', '#66b3ff', '#99ff99', '#ffcc99']  # 修正颜色值
#
# # 2. 创建画布
# plt.figure(figsize=(8, 8), dpi=100)
#
# # 3. 绘制环形图（本质是带空白的饼图）
# plt.pie(
#     sizes,
#     labels=labels,
#     colors=colors,
#     autopct='%.1f%%',
#     startangle=90,
#     pctdistance=0.85,  # 百分比位置（比饼图更靠外）
#     wedgeprops=dict(width=0.3, edgecolor='white')  # width控制环的厚度
# )
#
# # 4. 添加中心空白（画一个白色圆覆盖中心）
# centre_circle = plt.Circle((0, 0), 0.70, fc='white')  # 半径0.7的白色圆
# fig = plt.gcf()  # 获取当前画布
# fig.gca().add_artist(centre_circle)  # 添加中心圆
#
# # 5. 设置属性
# plt.title('电子设备销量占比', fontsize=14)
# plt.axis('equal')  # 保证圆形
#
# # 6. 显示图表
# plt.tight_layout()
# plt.show()

# import matplotlib.pyplot as plt
#
# # 设置中文字体支持
# plt.rcParams['font.sans-serif'] = ['SimHei']
# plt.rcParams['axes.unicode_minus'] = False
#
# # 1. 准备数据
# labels = ['技术部', '市场部', '运营部', '行政部','财务部']
# sizes = [350, 250, 200, 120,80]
# colors = ['#ff9999', '#66b3ff', '#99ff99', '#ffcc99','yellow']  # 修正颜色值
#
# # 2. 创建画布
# plt.figure(figsize=(8, 8), dpi=100)
#
# # 3. 绘制环形图（本质是带空白的饼图）
# plt.pie(
#     sizes,
#     labels=[f'{label}\n{size}万' for label, size in zip(labels, sizes)],
#     colors=colors,
#     autopct='%.2f%%',
#     startangle=80,
#     pctdistance=0.75,  # 百分比位置（比饼图更靠外）
#     wedgeprops=dict(width=0.3, edgecolor='white')  # width控制环的厚度
# )
#
# # 4. 添加中心空白（画一个白色圆覆盖中心）
# centre_circle = plt.Circle((0, 0), 0.70, fc='white')  # 半径0.7的白色圆
# fig = plt.gcf()  # 获取当前画布
# fig.gca().add_artist(centre_circle)  # 添加中心圆
#
# # 5. 设置属性
# plt.text(0, 0, '总预算\n1000万', fontsize=12)
# plt.title('2024年公司各部门预算占比环形图', fontsize=14)
# plt.axis('equal')  # 保证圆形
#
# # 6. 显示图表
# plt.tight_layout()
# plt.show()

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
#
# 1. 准备数据
np.random.seed(42)
data = np.random.randn(10000)  # 1000个符合标准正态分布的数据

# 2. 创建画布
plt.figure(figsize=(10, 6), dpi=100)

# 3. 绘制直方图
n, bins, patches = plt.hist(
    data,
    bins=30,  # 分箱数量（或传入分箱边界数组）
    density=True,  # 是否归一化（面积和为1）
    color='skyblue',  # 柱形颜色
    alpha=0.7,  # 透明度
    edgecolor='black',  # 柱形边框颜色
    linewidth=0.5  # 边框宽度
)

# 4. 叠加概率密度曲线（更直观展示分布）
mu, sigma = np.mean(data), np.std(data)
plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) *
         np.exp(- (bins - mu)**2 / (2 * sigma**2)),
         linewidth=2, color='red', label='正态分布曲线')

# 5. 设置属性
plt.title('正态分布数据直方图', fontsize=15)
plt.xlabel('数据值', fontsize=12)
plt.ylabel('频率密度', fontsize=12)
plt.grid(axis='y', linestyle=':', alpha=0.7)  # 只显示y轴网格
plt.legend()

# 6. 显示图表
plt.tight_layout()
plt.show()